package com.nuoniu.sibanyun.service.msg;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.erp.in.VInventoryCheckMain;
import com.nuoniu.sibanyun.entity.inOut.VInOutAllocationMain;
import com.nuoniu.sibanyun.entity.inOut.VInOutRecordDetail;
import com.nuoniu.sibanyun.entity.inOut.VInOutRecordMain;
import com.nuoniu.sibanyun.entity.msg.SysMsg;
import com.nuoniu.sibanyun.entity.so.VSaleDeliveryMain;
import com.nuoniu.sibanyun.userThread.UserInfo;

import java.util.List;

/**
 * <p>
 * 消息管理 服务类
 * </p>
 *
 * @author 小啊刚
 * @since 2022-01-07
 */
public interface ISysMsgService extends IService<SysMsg> {

    /**
     * 获取消息数量
     * @author 小啊刚
     * @date 2022-01-07
     */
    Integer getMsgCount(Integer type, Integer status);

    /**
     * 获取消息列表
     * @author 小啊刚
     * @date 2022-01-07
     */
    Page<SysMsg> pageList(Page page, Integer type, Integer status);

    /**
     * 阅读消息
     * @author 小啊刚
     * @date 2022-01-07
     */
    void readMsg(List<Long> ids);

    /**
     * 发送消息
     * @author 小啊刚
     * @date 2022-01-07
     */
    void sendMsg(SysMsg msg);

    /**
     * 删除消息
     * @author 小啊刚
     * @date 2022-01-07
     */
    void delete(List<Long> ids);

    /**
     * 库存预警通知
     * @author 小啊刚
     * @date 2022-01-07
     */
    void earlyWarningNotice(List<VInOutRecordDetail> inOutRecordDetails, VInOutRecordMain inOutRecordMain, UserInfo userInfo);

    /**
     * 库存提交提醒通知
     * @author 小啊刚
     * @date 2022-01-08
     */
    void inOutSubmitMsgNotice(VInOutRecordMain inOutRecordMain);

    /**
     * 盘点
     * @author 小啊刚
     * @date 2022-01-08
     */
    void checkMsgNotice(VInventoryCheckMain inventoryCheckMain);

    /**
     * 库存审核提醒
     * @author 小啊刚
     * @date 2022-01-08
     */
    void inOutExamineMsgNotice(VInOutRecordMain inOutRecordMain);

    /**
     * 调拨
     * @author 小啊刚
     * @date 2022-01-10
     */
    void allocationNotice(VInOutAllocationMain outAllocationMain);

    /**
     * 发货通知单
     * @author 小啊刚
     * @date 2022-01-10
     */
    void saleDeliveryNotice(VSaleDeliveryMain saleDeliveryMain);

    /**
     * 全部标记已读
     * @author 小啊刚
     * @date 2022-01-10
     */
    void realAll();
}
